import $bus from "./index";
import i18n from "@/lang/index";
import { errorTips, successTips } from "@/utils/utils";
import type { AxiosError } from "axios";
import { ElMessageBox } from "element-plus";

// http错误
// @ts-ignore
$bus.on("httpErrorHandle", function (err: AxiosError) {
  const { message, status } = err;

  if (message.match(/timeout/)) {
    errorTips(i18n.global.t("error.requestTimeout"));
  } else if (status === 404) {
    errorTips(i18n.global.t("error.interfaceAddressError"));
  } else if (status === 401) {
    // @ts-ignore
    ElMessageBox.confirm(i18n.global.t("error.Unauthorized"), "提示").then(
      () => {
        if (import.meta.env.MODE === "dev") {
          window.location.href = window.location.origin + "/#/";
        } else {
          window.location.href = window.location.origin + "/ESignManager/#/";
        }
        window.location.reload();
      }
    );
  } else if (status === 405) {
    errorTips("请求方式错误");
  } else if (status === 500) {
    errorTips(i18n.global.t("error.serverError"));
  } else {
    errorTips(i18n.global.t("error.unknownError"));
  }
});

// code标识
$bus.on("codeErrorHandle", function (code) {
  if (code === 9999) {
    errorTips(i18n.global.t("error.unknownError"));
  } else if (code === 2) {
    errorTips(i18n.global.t("error.operationFailed"));
  } else if (code === 3) {
    errorTips(i18n.global.t("error.invalidParameter"));
  } else if (code === 4) {
    errorTips(i18n.global.t("error.fileDoesNotExist"));
  } else if (code === 5) {
    errorTips(i18n.global.t("error.uploadedFileTooLarge"));
  } else if (code === 6) {
    errorTips(i18n.global.t("error.fileFormatErrorPDF"));
  } else if (code === 7) {
    errorTips(i18n.global.t("error.fileFormatErrorIMG"));
  } else if (code === 8) {
    errorTips(i18n.global.t("error.documenthasbeensigned"));
  } else if (code === 9) {
    errorTips(i18n.global.t("error.signDocumentExpire"));
  } else if (code === 10) {
    // @ts-ignore
    ElMessageBox.confirm(i18n.global.t("error.Unauthorized"), "提示").then(
      () => {
        if (import.meta.env.MODE === "dev") {
          window.location.href = window.location.origin + "/#/";
        } else {
          window.location.href = window.location.origin + "/ESignManager/#/";
        }
        window.location.reload();
      }
    );
  } else if (code === 11) {
    // @ts-ignore
    ElMessageBox.confirm(
      i18n.global.t("error.Accountloginonotherdevices"),
      "提示"
    ).then(() => {
      if (import.meta.env.MODE === "dev") {
        window.location.href = window.location.origin + "/#/";
      } else {
        window.location.href = window.location.origin + "/ESignManager/#/";
      }
      window.location.reload();
    });
    //12 显示账号被禁用
  } else if (code === 12) {
    // errorTips(i18n.global.t("error.Accountdisabled"));
    // @ts-ignore
    ElMessageBox.confirm(i18n.global.t("error.Accountdisabled"), "提示").then(
      () => {
        if (import.meta.env.MODE === "dev") {
          window.location.href = window.location.origin + "/#/";
        } else {
          window.location.href = window.location.origin + "/ESignManager/#/";
        }
        window.location.reload();
      }
    );
  } else if (code === 13) {
    errorTips(i18n.global.t("error.Verificationcodedoesnotexist"));
  } else if (code === 14) {
    errorTips(i18n.global.t("error.Verificationcodeerror"));
  } //手机号已存在
  else if (code === 15) {
    errorTips(i18n.global.t("error.Thephonenumberalreadyexists"));
  } else if (code === 16) {
    errorTips(i18n.global.t("error.Passwordformaterror"));
  } else if (code === 17) {
    errorTips(i18n.global.t("error.Sendingverification"));
  } else if (code === 18) {
    errorTips(i18n.global.t("error.Verificationcodesendingfailed"));
  } else if (code === 19) {
    errorTips(i18n.global.t("error.Emailalreadyexists"));
  } else if (code === 20) {
    errorTips(i18n.global.t("error.Unable"));
  } else if (code === 21) {
    errorTips(i18n.global.t("error.Accountorpassworderror"));
  } else if (code === 22) {
    errorTips(i18n.global.t("error.Accountcancelled"));
  } else if (code === 23) {
    errorTips(i18n.global.t("error.Accountlocked"));
  } else if (code === 24) {
    errorTips(i18n.global.t("error.Thenewpasswordisthesame"));
  } else if (code === 25) {
    errorTips(i18n.global.t("error.Thepasswordisincorrect"));
  } else if (code === 26) {
    // @ts-ignore
    ElMessageBox.confirm(i18n.global.t("error.userdoesnotexist"), "提示").then(
      () => {
        if (import.meta.env.MODE === "dev") {
          window.location.href = window.location.origin + "/#/";
        } else {
          window.location.href = window.location.origin + "/ESignManager/#/";
        }
        window.location.reload();
      }
    );
  } else if (code === 27) {
    errorTips(i18n.global.t("error.Youthesignatory"));
  } else if (code === 28) {
    errorTips(i18n.global.t("error.noData"));
  } else if (code === 29) {
    errorTips(i18n.global.t("error.Tcancelyouraccount"));
  } else if (code === 600) {
    errorTips("你没有访问该资源的权限");
  } else if (code === 601) {
    // errorTips('角色已改变');
    // @ts-ignore
    ElMessageBox.confirm(i18n.global.t("角色已改变,请重新登录"), "提示").then(
      () => {
        if (import.meta.env.MODE === "dev") {
          window.location.href = window.location.origin + "/#/";
        } else {
          window.location.href = window.location.origin + "/ESignManager/#/";
        }
        window.location.reload();
      }
    );
  } else if (code === 602) {
    errorTips("角色被禁用");
    //禁止其他账号对超级管理员进行编辑、重置密码、删除等等操作
  } else if (code === 603) {
    errorTips("禁止操作");
  } else if (code === 604) {
    errorTips("邮箱格式错误");
  } else if (code === 605) {
    errorTips("账号格式错误");
  } else if (code === 606) {
    errorTips("请选择权限");
  } else if (code === 607) {
    ElMessageBox.confirm("权限组已发生变化，需要重新登录", "提示").then(() => {
      if (import.meta.env.MODE === "dev") {
        window.location.href = window.location.origin + "/#/";
      } else {
        window.location.href = window.location.origin + "/ESignManager/#/";
      }
      window.location.reload();
    });
  } else if (code === 608) {
    errorTips("所属权限组存在子节点不能不可编辑");
  } else if (code === 609) {
    errorTips("子节点不能高于父节点权限");
  } else if (code === 610) {
    errorTips("权限组名存在");
  } else if (code === 611) {
    errorTips("权限组不存在");
  } else if (code === 615) {
    console.log("FTA认证后，不需要扫码，只填验证码");
    // successTips('FTA已认证，直接输入验证码');
  } else if (code === 616) {
    console.log("需要FTA认证");
  } else if (code === 617) {
    console.log("FTA认证后，去修改密码");
  } else if (code === 618) {
    errorTips("FTA认证失败，请重新扫码");
  } else if (code === 620) {
    errorTips("国家已存在");
  } else if (code === 621) {
    errorTips("权限组不存在");
  } else if (code === 622) {
    errorTips("该账号已存在");
  } else if (code === 613) {
    errorTips("权限组已被使用,不能删除");
  } else {
    errorTips("其他异常");
  }
});
